29inline Eigen::Transform<typename D1::Scalar, 2, Eigen::Isometry>
toIsometry2d(
const Eigen::MatrixBase<D1>& translation,
30 const double& rotation)
34 return Eigen::Translation<typename D1::Scalar, 2>(translation) * Eigen::Rotation2D<typename D1::Scalar>(rotation);
37template <
typename D1,
typename D2>
38inline Eigen::Transform<typename D1::Scalar, 2, Eigen::Isometry>
toIsometry2d(
const Eigen::MatrixBase<D1>& translation,
39 const Eigen::MatrixBase<D2>& rotation)
48inline Eigen::Transform<typename D1::Scalar, 2, Eigen::Isometry>
toIsometry2d(
const Eigen::MatrixBase<D1>& trf)
52 return toIsometry2d(Eigen::Matrix<typename D1::Scalar, 2, 1>(trf(0), trf(1)), trf(2));
60template <
typename D1,
typename D2>
61inline Eigen::Transform<typename D1::Scalar, 3, Eigen::Isometry>
toIsometry3d(
62 const Eigen::MatrixBase<D1>& translation,
63 const Eigen::QuaternionBase<D2>& rotation)
67 return Eigen::Translation<typename D1::Scalar, 3>(translation) * rotation;
70template <
typename D1,
typename D2>
71inline Eigen::Transform<typename D1::Scalar, 3, Eigen::Isometry>
toIsometry3d(
const Eigen::MatrixBase<D1>& translation,
72 const Eigen::MatrixBase<D2>& rotation)
79 Eigen::Quaternion<typename D2::Scalar>(Eigen::Matrix<typename D2::Scalar, 4, 1>(rotation).normalized()));
83inline Eigen::Transform<typename D1::Scalar, 3, Eigen::Isometry>
toIsometry3d(
const Eigen::MatrixBase<D1>& trf)
86 return toIsometry3d(Eigen::Matrix<typename D1::Scalar, 3, 1>(trf(0), trf(1), trf(2)),
87 Eigen::Quaternion<typename D1::Scalar>(trf(6), trf(3), trf(4), trf(5)));
95inline Eigen::Vector3d
toVector(
const Eigen::Isometry2d& trf)
97 return (Eigen::Vector3d() << trf.translation(), Eigen::Rotation2Dd(trf.rotation()).angle()).finished();
102 return (
Eigen::Vector7d() << trf.translation(), Eigen::Quaterniond(trf.rotation()).coeffs().normalized())
108 return Eigen::Translation3d((Eigen::Vector3d() << trf_2d.translation(), 0).finished()) *
109 Eigen::AngleAxisd(Eigen::Rotation2Dd(trf_2d.rotation()).angle(), Eigen::Vector3d::UnitZ());
112inline Eigen::Isometry2d
projectTo2d(
const Eigen::Isometry3d& trf_3d)
114 return Eigen::Translation2d(trf_3d.translation().head<2>()) *
115 Eigen::Rotation2Dd(
getYaw(trf_3d.rotation().matrix()));
Definition: vector_composite.h:27
Matrix< double, 7, 1 > Vector7d
7-vector of real double type
Definition: wolf.h:106
Definition: capture_base.h:23
Eigen::Transform< typename D1::Scalar, 2, Eigen::Isometry > toIsometry2d(const Eigen::MatrixBase< D1 > &translation, const double &rotation)
Definition: isometry_conversions.h:29
Eigen::Transform< typename D1::Scalar, 3, Eigen::Isometry > toIsometry3d(const Eigen::MatrixBase< D1 > &translation, const Eigen::QuaternionBase< D2 > &rotation)
Definition: isometry_conversions.h:61
Eigen::Isometry3d inverseProjectTo3d(const Eigen::Isometry2d &trf_2d)
Definition: isometry_conversions.h:106
Eigen::Isometry2d projectTo2d(const Eigen::Isometry3d &trf_3d)
Definition: isometry_conversions.h:112
Eigen::MatrixBase< Derived >::Scalar getYaw(const Eigen::MatrixBase< Derived > &_M)
Definition: rotations.h:223
Eigen::Vector3d toVector(const Eigen::Isometry2d &trf)
Definition: isometry_conversions.h:95
static void check(const T &t)
Assert matrix size dynamically or statically.
Definition: wolf.h:187